package com.smartinput.user.query.service

import com.smartinput.user.query.dao.UserDao
import com.smartinput.user.query.entry.UserEntry
import org.springframework.stereotype.Service

@Service
class UserQueryService(
    private val userDao: UserDao
) {
    
    /**
     * 根据用户ID查询用户
     */
    fun findById(uid: String): UserEntry? {
        return userDao.findById(uid)
    }
    
    /**
     * 根据用户名查询用户
     */
    fun findByUserName(userName: String): UserEntry? {
        return userDao.findByUserName(userName)
    }
    
    /**
     * 根据邮箱查询用户
     */
    fun findByEmail(email: String): UserEntry? {
        return userDao.findByEmail(email)
    }
    
    /**
     * 根据手机号查询用户
     */
    fun findByPhone(phone: String): UserEntry? {
        return userDao.findByPhone(phone)
    }
    
    /**
     * 查询所有用户
     */
    fun findAll(): List<UserEntry> {
        return userDao.findAll()
    }
    
    /**
     * 分页查询用户
     */
    fun findByPage(page: Int, size: Int): List<UserEntry> {
        val offset = (page - 1) * size
        return userDao.findByPage(offset, size)
    }
    
    /**
     * 根据用户名模糊查询
     */
    fun findByUserNameLike(userName: String): List<UserEntry> {
        return userDao.findByUserNameLike("%$userName%")
    }
    
    /**
     * 统计用户总数
     */
    fun countAll(): Int {
        return userDao.countAll()
    }
    
    /**
     * 统计启用的用户数量
     */
    fun countEnabled(): Int {
        return userDao.countEnabled()
    }
    
    /**
     * 检查用户名是否存在
     */
    fun existsByUserName(userName: String): Boolean {
        return userDao.findByUserName(userName) != null
    }
    
    /**
     * 检查邮箱是否存在
     */
    fun existsByEmail(email: String): Boolean {
        return userDao.findByEmail(email) != null
    }
    
    /**
     * 检查手机号是否存在
     */
    fun existsByPhone(phone: String): Boolean {
        return userDao.findByPhone(phone) != null
    }
} 